;int calcular_longitud_codificacion(unsigned int *tabla_apariciones, codigo_t *tabla_codigo)
;	int res=0
;	int i
;	for i=0,i<256,i++
;		if tabla_apariciones[i]
;		res += tabla_codigo[i].long_codigo*tabla_apariciones[i]
;	return res


section .text
global calcular_longitud_codificacion

%define tabla_apariciones [ebp+8]
%define tabla_codigo [ebp+12]

calcular_longitud_codificacion:
	push ebp
	mov ebp,esp
	push esi
	push edi
	push ebx
	xor eax,eax	;seteo res en 0
	xor edi,edi	;seteo en 0 mi acumulador ret
	xor edx,edx
	xor esi,esi
	mov esi,tabla_codigo
	xor ecx,ecx	;int i=0  es el contador de mi for
	push edx
for:					;for i=0,i<256,i++
	mov ebx,tabla_apariciones	;if tabla_apariciones[i]
	mov ebx,[ebx+ecx]
	cmp ebx,0
	jne aparece

continuar_for:
	add ecx,4			;i++
 	cmp ecx,1024			;si no llegue a 256 sigo iterando . 1024 es 265*4, ecx avanza de a 4 bytes
	je fin
	jmp for

aparece:
	mov edi,[esi+4*ecx+8]		;offset_long_codigo  esi tien la longitud del caracter i
	mov ebx,tabla_apariciones
	mov eax,[ebx+ecx]
;	mov eax,ebx		;ebx tiene la cantidad d eapariciones, y ahora tambien als tiene eax
	mul edi			;res += tabla_codigo[i].long_codigo*tabla_apariciones[i]
	pop edx
	add edx,eax
	push edx
	jmp continuar_for

fin:
	pop edx
	mov eax,edx	;paso ret a eax
	pop ebx
	pop edi
	pop esi
	pop ebp
	ret
